[SOLARIS] Xen daemons are managed separately, so we need a way to start
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Tue, 17 Oct 2006 17:52:17 +0000 (18:52 +0100)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Tue, 17 Oct 2006 17:52:17 +0000 (18:52 +0100)
just xend, and we need to disable xend's self-restarter.

Signed-off-by: John Levon <john.levon@sun.com>
tools/misc/xend
tools/python/xen/xend/osdep.py
tools/python/xen/xend/server/SrvDaemon.py

index ff58b30773db0efa75c6e7c21ac51c02d0d5604c..b0ee27f5563eed0e3b169c08b877f8164c94fe8d 100644 (file)
@@ -19,6 +19,9 @@
 
    The daemon should reconnect to device control interfaces
    and recover its state when restarted.
+
+   On Solaris, the daemons are SMF managed, and you should not attempt
+   to start xend by hand.
 """
 import os
 import os.path
@@ -108,9 +111,10 @@ def main():
     if not sys.argv[1:]:
         print 'usage: %s {start|stop|restart}' % sys.argv[0]
     elif sys.argv[1] == 'start':
-        start_xenstored()
-        start_consoled()
-       start_blktapctrl()
+        if os.uname()[0] != "SunOS":
+            start_xenstored()
+            start_consoled()
+            start_blktapctrl()
         return daemon.start()
     elif sys.argv[1] == 'trace_start':
         start_xenstored()
index 296dac43693bafeff869d6fa682a6dbe47f88929..35af7c55af59ea463d6b4d7fd57830ae42124e3e 100644 (file)
@@ -24,4 +24,13 @@ _scripts_dir = {
     "SunOS": "/usr/lib/xen/scripts",
 }
 
-scripts_dir = _scripts_dir.get(os.uname()[0], "/etc/xen/scripts")
+_xend_autorestart = {
+    "Linux": True,
+    "SunOS": False,
+}
+
+def _get(var, default=None):
+    return var.get(os.uname()[0], default)
+
+scripts_dir = _get(_scripts_dir, "/etc/xen/scripts")
+xend_autorestart = _get(_xend_autorestart)
index 3f3a90d15ac0b509ffeb3ba1f800c257ee048077..f883e7da85b5e95f69b475e8aee4c40778328d39 100644 (file)
@@ -17,6 +17,7 @@ import traceback
 import xen.lowlevel.xc
 
 from xen.xend.XendLogging import log
+from xen.xend import osdep
 
 import relocate
 import SrvServer
@@ -168,8 +169,14 @@ class Daemon:
             # ready to receive requests.  All subsequent restarts we don't
             # want this behaviour, or the pipe will eventually fill up, so
             # we just pass None into run in subsequent cases (by clearing w
-            # in the parent of the first fork).
+            # in the parent of the first fork).  On some operating systems,
+            # restart is managed externally, so we won't fork, and just exit.
             while True:
+
+                if not osdep.xend_autorestart:
+                    self.run(os.fdopen(w, 'w'))
+                    break
+
                 pid = self.fork_pid()
                 if pid:
                     if w is not None: